// 1. 首先创一个新的空对象。
// 2. 根据原型链，设置空对象的 __proto__ 为构造函数的 prototype 。
// 3. 构造函数的 this 指向这个对象，执行构造函数的代码（为这个新对象添加属性）。
// 4. 判断函数的返回值类型，如果是引用类型，就返回这个引用类型的对象。

export const MyNew = function(context) {
    if (typeof context !== 'function') {
        throw Error('cotext is not a function')
    }
    let obj = {}
    obj.__proto__ = context.prototype
    let res = context.apply(obj, [...arguments].slice(1))
    return typeof res === 'object' ? res : obj
}